const Compiler = require('./Compiler')


function webpack(options){
  // 1. 初始化参数，从配置文件中读取配置对象和shell脚本中的参数进行合并，得到新的配置对象
  let shellOptions = process.argv.slice(2).reduce((config,argv)=>{
    let [key,value] = argv.split('=')
    config[key.slice(2)] = value
    return config
  },{})
  const finalOptions = {...options, ...shellOptions}
  // 2. 初始化compiler对象
  const compiler = new Compiler(finalOptions)
  // 3. 加载所有的配置的插件
  if(finalOptions.plugins && Array.isArray(finalOptions.plugins)){
    for (const plugin of finalOptions.plugins) {
      plugin.apply(compiler)
    }
  }
  return compiler
}

module.exports = webpack